/**
 * 全部任务执行“成功后”，进入then逻辑
 * 返回所有任务的结果
 * 只要有一个任务“失败”，进入catch逻辑
 */
Promise.all([
    Promise.resolve(1),
    Promise.resolve(2),
    Promise.resolve(3)  
]).then(success => {
    console.log("success",success)
}).catch(err => {
    console.log("err",err)
})


/**
 * 场景：并发请求多任务且不容忍失败
 */

Promise.all([
    // 任务1
    // 任务2
    // 任务3
]).then(success => {
    render('pannelA',success[0])
    render('pannelB',success[1])
    render('pannelC',success[2])
}).catch(err => {
    console.log("err",err)
})

/**
 * 全部任务执行完成后，进入then逻辑
 * 返回所有任务的结果和状态，不会进入catch逻辑
 */
Promise.allSettled([
    Promise.resolve(1),
    Promise.resolve(2),
    Promise.resolve(3)
]).then(success =>{
    console.log("success",success)
}).catch(err => {
    console.log("err",err)
})


/**
 * 场景:开发请求多任务且能容忍势必
 */

Promise.allSettled([
    // 任务1
    // 任务2
    // 任务3
]).then(success => {
    console.log("success",success)
}).catch(err => {
    console.log("err",err)
})


/**
 * 首个任务执行“成功后”，进入then逻辑
 * 返回首个任务的结果
 * 所有任务“失败”，进入catch逻辑
 */
Promise.any([
    new Promise((resolve,reject) => {
        setTimeout(() => {
            reject("p1")
        },1000)
    }),
    new Promise((resolve,reject) => {
        setTimeout(() => {
            resolve('p2')
        },1000)
    }),
    new Promise((resolve,reject) => {
        setTimeout(() => {
            reject("p3")
        },1000)
    })
]).then(result => {
    console.log("success",result)
}).catch(err => {
    console.log("err",err)
})


/**
 * 场景特性 ，一个任务成功即可继续，不关系其他的失败任务
 */
//场景1：寻找有效地CDN
Promise.any([
    // cdn地址1
    // cdn地址2
    // cdn地址3
]).then(result => {
    //应用cdn
}).catch(err => {
    console.log("err",err)
})

//场景2：抢票
Promise.any([
    // 抢票地址1
    // 抢票地址2
    // 抢票地址3
]).then( success => {
    // 成功后，跳转支付页面
}).catch(err => {
    console.log("err",err)
})